home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / ms-0_06.lha / bms-0.06 / TO_DO < prev    next >
Text File  |  1993-08-06  |  6KB  |  126 lines

  1. This file contains some random notes about things that could be done
  2. to improve MandelSpawn.  Feel free to try you hand at any of these and
  3. send me context diffs; if your enhancements are nice and clean I will
  4. incorporate them into the distribution.  If you make a significant
  5. contribution (more than just a few lines of code), a written copyright
  6. disclaimer may be needed (see the end of the file COPYING).
  7.  
  8.  
  9.                     Andreas, gson@niksula.hut.fi
  10. --
  11.  
  12. The documentation needs work.  More info is needed about how to
  13. install on hosts running SunOS and/or YP. The xms(1) man page should
  14. have a RESOURCES section.  Perhaps there should be a tutorial in
  15. Texinfo format.
  16.  
  17. Mslaved and mslavedc still don't accept spaces between an option and
  18. its argument.  This should be fixed.
  19.  
  20. In xms, the value specified by the "-colours" option should probably
  21. have a default value that is determined automatically as a function of
  22. the number of display planes and/or the number of free cells in the
  23. default colourmap.
  24.  
  25. Add support for other visual types besides PseudoColor and StaticGray
  26. to xms, and improve the support for StaticGray visuals so that it uses
  27. greyscale instad of black-and-white if possible.
  28.  
  29. Use getservent()?
  30.  
  31. Invent a clever algorithm to decide which bitplanes to invert (instead
  32. of inverting them all) to maximize contrast when drawing the
  33. rubberband box in xms.
  34.  
  35. The "-greyscale" option of xms should not be necessary when it is
  36. possible to detect automatically that a greyscale display is being
  37. used (unfortunately some machines lie about this).
  38.  
  39. There should be a way to "loop" only part of the spectrum instead of
  40. the whole spectrum when the number of colours is smaller than the
  41. iteration count.  E.g., xms -spectrum "white-(red-blue-green)-black"
  42. would show a white exterior, black interior and repeat the
  43. red-blue-green sequence as many times as needed.
  44.  
  45. Write a widget for interactive editing of the colourmap ("spectroscope
  46. widget"?) for xms.  It could show the spectrum as a band of colours
  47. with lines marking the interpolation points, allowing the user to grab
  48. the points with the mouse and move them towards either end of the
  49. spectrum, and popping up a set of scrollbars next to the line for
  50. editing the RGB value.
  51.  
  52. A lot of identical small structures are malloc'ed and freed;
  53. it would probably be faster to put them on a linked list instead
  54. of freeing them and then allocate from that list whenever an object
  55. of the same size is needed again and the list is nonempty.
  56.  
  57. XtInitialize should not be used (in main.c), it's obsolete.
  58.  
  59. Add special-case support for more display types (those that
  60. cause the dreaded "drawing a pixel at a time, this will be very
  61. slow" message).  In particular, the Sony NEWS 4-plane display
  62. adapter is not supported in monochrome mode, nor are monochrome
  63. DECStations.
  64.  
  65. Write a fixed-point multiply routine for the SPARC in assembly
  66. language and compare its performance to the floating-point version
  67. (it might be slower).
  68.  
  69. Add fixed-point support for other cpus (NS32K... ?) wherever
  70. it is faster than floating point. 
  71.  
  72. Add an option to mslaved to make it discard requests from outside the
  73. local network, to avoid people abusing servers at remote sites.
  74. ("netmask-style"?).
  75.  
  76. It should be possible to query the computation servers for performance
  77. statistics.  This of course turns MandelSpawn into Yet Another Unix
  78. Benchmark, and gives yet another definition of the dreaded MIPS
  79. rating: MIPS is short for "Mandelbrot Iterations Per Second" :-).  It
  80. may become a very popular benchmark because it gives very high
  81. MIPS ratings :-) :-).
  82.  
  83. Improve the protocol.  Currently the servers are idle during the
  84. round-trip to the client when they have finished one chunk and are
  85. waiting for the next.  Instead the client could send, say, two chunks
  86. initially and the server would try to maintain a queue of work to be
  87. done containing about two chunks at all times.  When sending results
  88. to a client the server should indicate how many more chunks it needs
  89. to keep the queue full.  This would also make it possible to have a
  90. single server running on a multiprocessor machine; it would then ask
  91. for at least as many chunks as there are CPUs in the machine.  Note
  92. that the "queue" of work to be done probably ought to be a LIFO
  93. structure so that the most recent requests are served first; they are
  94. the ones that are most likely to be finished before the client has
  95. retransmitted the same chunk to another server.  Having most chunks
  96. calculated immediately and a few chunks very late is better than
  97. delaying all chunks uniformly as when using a FIFO.
  98.  
  99. There should also be an "abort" packet that is sent to all computation
  100. servers when an update has finished, so that they don't continue
  101. making calculations whose results will never be used.  Note that this
  102. will also reduce network load because the abort packet is smaller than
  103. the packet whose transmission it inhibits.
  104.  
  105. Implement multiple-precision fixed-point arithmetic.  Note that even
  106. a 64-bit fixed-point number will have more precision than the mantissa
  107. of a typical C "double", so the client will also have to do its
  108. coordinate manipulations (zooming, etc.) using the fixed-point routines
  109. or some other more or less portable, multiple-precision arithmetic
  110. package.
  111.  
  112. Write a program for colouring the output of bms in the same way xms
  113. does, using on a "spectrum" of colours to interpolate between.  The
  114. pgmtoppm program in PBMPLUS already does colour interpolation between
  115. two colours, so it should be a good starting point.  Note that this
  116. feature should definitely not be built into bms but written as a
  117. separate utility program that converts from pgm to ppm format.  Such a
  118. program would also be very useful as a general-purpose tool for making
  119. false-colour images of any kind of greyscale data.
  120.  
  121. There should be a way to scroll the image inside an xms window,
  122. recalculating only the newly exposed areas at the trailing edge.
  123.  
  124. Colormap animation would be a nice addition to xms, and not difficult
  125. to implement.
  126.